﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Dominio;
using Servicios;

namespace EstadisticaProduce.Acuicultura
{
    public partial class frmComprasTerceros : System.Web.UI.Page
    {
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        Int32 iresultado = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                hdncodempresa.Value = "00001";
                hdncodregistro.Value = "0";
                hdnaccion.Value = string.Empty;
                cargaTipoUso();
                cargaUbigeoTerceros();
                cargaConservacion();
                cargaEmpresas();
                cargaEspecieCompras();
                cargaPresentacion();

                cargaGrilla();
            }
        }

        private void cargaEspecieCompras()
        {
            decimal cod_especie = -1;
            decimal cod_tipo_especie = -1;
            string des_especie = string.Empty;
            string cod_empresa = string.Empty;
            string tipo_uso = string.Empty;

            try
            {
                iresultado = 1;
                cod_especie = -1;
                cod_tipo_especie = -1;
                des_especie = string.Empty;
                cod_empresa = string.Empty;
                tipo_uso = ddlTipoUso.SelectedItem.Value;

                if (tipo_uso == "1")
                {
                    cod_empresa = hdncodempresa.Value;
                }
                else if (tipo_uso == "2")
                {
                    cod_empresa = "%";
                }
                else
                {
                    cod_empresa = "0";
                }

                Hashtable ht = new Hashtable();
                ht.Add("cod_especie", cod_especie);
                ht.Add("cod_tipo_especie", cod_tipo_especie);
                ht.Add("des_especie", des_especie);
                ht.Add("cod_empresa", cod_empresa);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

                lst = _consultas.ListaEspecies(ht);
                ddlEspecie.DataSource = lst;
                ddlEspecie.DataTextField = "desespecie";
                ddlEspecie.DataValueField = "codespecie";
                ddlEspecie.DataBind();
                Utilidades.DropDownListAnnadir(ref ddlEspecie, "0", "- Seleccione", 0);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally { 
                if(iresultado==99){

                }else{
                
                }            
            }
        }

        private void cargaTipoUso() {
            decimal COD_TIPOUSO = -1;
            string DES_TIPOUSO = string.Empty;

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_TIPOUSO", COD_TIPOUSO);
                ht.Add("DES_TIPOUSO", DES_TIPOUSO);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaTipoUso(ht);

               ddlTipoUso.DataSource = lst;
               ddlTipoUso.DataTextField = "destipouso";
               ddlTipoUso.DataValueField = "codtipouso";
               ddlTipoUso.DataBind();

               Utilidades.DropDownListAnnadir(ref ddlTipoUso, "0", "- Seleccione -", 0);

            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
            }
        }

        private void cargaUbigeoTerceros()
        {
            string COD_EMPRESA = hdncodempresa.Value;

            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaUbigeoComprasTerceros(ht);

                ddlRegion.DataSource = lst;
                ddlRegion.DataTextField = "desubicacion";
                ddlRegion.DataValueField = "coddepartamento";
                ddlRegion.DataBind();

                Utilidades.DropDownListAnnadir(ref ddlRegion, "0", "- Seleccione -", 0);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
            }
        }

        private void cargaEmpresas() {
            string COD_REGION = string.Empty;
            string COD_EMPRESA = string.Empty;
            try
            {
                COD_REGION = ddlRegion.SelectedItem.Value;
                COD_EMPRESA = hdncodempresa.Value;
                
                Hashtable ht = new Hashtable();
                ht.Add("COD_REGION", COD_REGION);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaEmpresaCompraTerceros(ht);

                ddlEmpresa.DataSource = lst;
                ddlEmpresa.DataTextField = "desempresa";
                ddlEmpresa.DataValueField = "codempresa";
                ddlEmpresa.DataBind();

                Utilidades.DropDownListAnnadir(ref ddlEmpresa, "0", "- Seleccione -", 0);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
            }                
        }

        protected void ddlEmpresa_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargaEspecieCompras();
        }

        protected void ddlRegion_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargaEmpresas();
            cargaEspecieCompras();
        }

        protected void ddlTipoUso_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargaEspecieCompras();
        }

        protected void ddlEspecie_SelectedIndexChanged(object sender, EventArgs e)
        {
            cargaPresentacion();
        }

        private void cargaPresentacion() {

            decimal COD_TIPOPRESENTACION = -1;
            string DES_TIPOPRESENTACION = string.Empty;
            decimal COD_ESPECIE = 0;
            try
            {
                COD_TIPOPRESENTACION = -1;
                DES_TIPOPRESENTACION = string.Empty;
                COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedItem.Value);
                
                Hashtable ht = new Hashtable();
                ht.Add("COD_TIPOPRESENTACION", COD_TIPOPRESENTACION);
                ht.Add("DES_TIPOPRESENTACION", DES_TIPOPRESENTACION);
                ht.Add("COD_ESPECIE", COD_ESPECIE);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaTipoPresentacion(ht);

               ddlPresentacion.DataSource = lst;
               ddlPresentacion.DataTextField = "despresentacion";
               ddlPresentacion.DataValueField = "codpresentacion";
               ddlPresentacion.DataBind();

               Utilidades.DropDownListAnnadir(ref ddlPresentacion, "0", "- Seleccione -", 0);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
            }
        }

        private void cargaConservacion()
        {
            decimal COD_TIPO_CONSERVACION = -1;
            string DES_TIPO_CONSERVACION = string.Empty;
            
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_TIPO_CONSERVACION",COD_TIPO_CONSERVACION);
                ht.Add("DES_TIPO_CONSERVACION", DES_TIPO_CONSERVACION);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaTipoConservacion(ht);

                ddlConservacion.DataSource = lst;
                ddlConservacion.DataTextField = "desconservacion";
               ddlConservacion.DataValueField = "codconservacion";
               ddlConservacion.DataBind();

               Utilidades.DropDownListAnnadir(ref ddlConservacion, "0", "- Seleccione -", 0);

            }
            catch (Exception ex)
            {
                err_mens = "Error al cargar Tipo conservacion: " + ex.Message;
                Response.Write(err_mens);
            }
        }
        
        private void cargaGrilla(){
            decimal COD_COMPRATERCERO = -1;
            string COD_EMPRESA =  hdncodempresa.Value;
            
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_COMPRATERCERO", COD_COMPRATERCERO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaCompraTerceros(ht);
                gvRegistro.DataSource = lst;
                gvRegistro.DataBind();
            }
            catch (Exception ex)
            {
                err_mens = "Error al cargar grilla:" + ex.Message;
                muestraPnlMensaje(err_mens, 1);
            }
            finally {

                muestraPnlMensaje(string.Empty, -1);
            }
        }

        private void muestraPnlMensaje(string _smens, Int32 _iopcion) {
            if (_iopcion == 1)
            {
                pnlMensaje.Visible = true;
                lblMensaje.Text = _smens;
            }
            else {
                pnlMensaje.Visible = false;
                lblMensaje.Text = string.Empty;
            }
        }

        protected void btnGraba_Click(object sender, EventArgs e)
        {
            Int32 iresultado = 0;
            string saccion = hdnaccion.Value;
            decimal COD_COMPRATERCERO = Convert.ToDecimal(hdncodregistro.Value);
            string COD_EMPRESA = hdncodempresa.Value;
            string COD_PERIODO = hdnperiodo.Value;
            string COD_EMPRESATERCERO = ddlEmpresa.SelectedItem.Value;
            decimal COD_ESPECIE = Convert.ToDecimal(ddlEspecie.SelectedItem.Value);
            decimal COD_TIPO_CONSERVACION = Convert.ToDecimal(ddlConservacion.SelectedItem.Value);
            decimal COD_TIPOPRESENTACION = Convert.ToDecimal(ddlPresentacion.SelectedItem.Value);
            decimal VOL_COMPRATERCERO = Convert.ToDecimal(txtVolumen.Text);
            decimal VAL_COMPRATERCERO = Convert.ToDecimal(txtValor.Text);
            decimal COD_TIPOUSO = Convert.ToDecimal(ddlTipoUso.SelectedItem.Value);
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_COMPRATERCERO", COD_COMPRATERCERO);
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_EMPRESATERCERO", COD_EMPRESATERCERO);
                ht.Add("COD_ESPECIE", COD_ESPECIE);
                ht.Add("COD_TIPO_CONSERVACION", COD_TIPO_CONSERVACION);
                ht.Add("COD_TIPOPRESENTACION", COD_TIPOPRESENTACION);
                ht.Add("VOL_COMPRATERCERO", VOL_COMPRATERCERO);
                ht.Add("VAL_COMPRATERCERO", VAL_COMPRATERCERO);
                ht.Add("COD_TIPOUSO", COD_TIPOUSO);

                if (hdncodregistro.Value != string.Empty && saccion == "EDITAR")
                {
                    iresultado = _consultas.ActualizaCompraTerceros(ht);
                    err_mens = "Se actualizó la compra correctamete";
                }
                else
                {
                    iresultado = _consultas.InsertaCompraTerceros(ht);
                    err_mens = "Se registro la compra correctamente."; 
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    limpiaFormulario();
                    cargaGrilla();
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
            }
        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            limpiaFormulario();
        }
                
        private void limpiaFormulario() {
            hdnaccion.Value = string.Empty;
            hdncodregistro.Value = string.Empty;
            txtValor.Text = "0";
            txtVolumen.Text = "0";

            Utilidades.DropDownListSelectValue(ref ddlEmpresa, "0");
            Utilidades.DropDownListSelectValue(ref ddlRegion, "0");
            Utilidades.DropDownListSelectValue(ref ddlEspecie, "0");
            Utilidades.DropDownListSelectValue(ref ddlConservacion, "0");
            Utilidades.DropDownListSelectValue(ref ddlPresentacion, "0");
            Utilidades.DropDownListSelectValue(ref ddlTipoUso, "0");

        }

        private void cargaGrillaVacia()
        {
            domConsultasGenerales en = new domConsultasGenerales();
            en.cod_empresa = "";
            en.desempresacompra = "Empresa Com";
            List<domConsultasGenerales> _datos = new List<domConsultasGenerales>();
            _datos.Add(en);

            gvRegistro.DataSource = _datos;
            gvRegistro.DataBind();
        }

        protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                {
                    GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                    int Index = row.RowIndex;

                    if (e.CommandName == "x_edit")
                    {
                        /*
                         * DataKeys:
                         * codcompraterceros,codperiodo,cod_empresa,codespecie,desespecie,
                         * coddepartamento,desubicacion,codpresentacion,despresentacion,
                         * codconservacion,desconservacion,numvolumen,numvalor,codtipouso,destipouso,
                         * codempresavende,desempresavende,desempresa
                         */
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.codcompraterceros = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codcompraterceros"]);
                        be.cod_empresa = gvRegistro.DataKeys[Index].Values["cod_empresa"].ToString();
                        be.codespecie = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codespecie"]);
                        be.coddepartamento = gvRegistro.DataKeys[Index].Values["coddepartamento"].ToString();
                        be.desubicacion = gvRegistro.DataKeys[Index].Values["desubicacion"].ToString();
                        be.codpresentacion = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codpresentacion"]);
                        be.codconservacion = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codconservacion"]);
                        be.codtipouso = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codtipouso"]);
                        be.codempresatercero = gvRegistro.DataKeys[Index].Values["codempresatercero"].ToString();
                        be.numvolumen = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["numvolumen"]);
                        be.numvalor = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["numvalor"]);
                                                
                        limpiaFormulario();
                        cargaFormulario(be);
                    }
                    else
                    {
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.codcompraterceros = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["codcompraterceros"]);
                        be.cod_empresa = gvRegistro.DataKeys[Index].Values["cod_empresa"].ToString();
                        be.cod_establecimiento = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_establecimiento"]);
                        be.codempresacompra = gvRegistro.DataKeys[Index].Values["codempresacompra"].ToString();

                        eliminaRegistro(be);
                    }
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.StackTrace.ToString();
            }
        }

        private void cargaFormulario(domConsultasGenerales _be)
        {
            txtValor.Text = _be.numvalor.ToString();
            txtVolumen.Text = _be.numvolumen.ToString();

            hdnaccion.Value = "EDITAR";
            hdncodregistro.Value = _be.codcompraterceros.ToString();
            Utilidades.DropDownListSelectValue(ref ddlTipoUso, _be.codtipouso.ToString());
            cargaEspecieCompras();
            Utilidades.DropDownListSelectValue(ref ddlRegion, _be.coddepartamento.ToString());
            cargaEmpresas();
            Utilidades.DropDownListSelectValue(ref ddlEmpresa, _be.codempresatercero.ToString());
            cargaEspecieCompras();
            Utilidades.DropDownListSelectValue(ref ddlEspecie, _be.codespecie.ToString());
            cargaPresentacion();
            Utilidades.DropDownListSelectValue(ref ddlPresentacion, _be.codpresentacion.ToString());

            Utilidades.DropDownListSelectValue(ref ddlConservacion, _be.codconservacion.ToString());

        }

        private void eliminaRegistro(domConsultasGenerales _be)
        {
            decimal COD_COMPRA_TERCEROS = _be.codcompraterceros;
            string COD_EMPRESA = _be.cod_empresa;
            Int32 iresultado = 0;
            try
            {
                //Hashtable ht = new Hashtable();
                //ht.Add("COD_REGISTRO_SIEMBRA", COD_REGISTRO_SIEMBRA);
                //ht.Add("COD_EMPRESA", COD_EMPRESA);

                //iresultado = _consultas.EliminaSiembra(ht);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se eliminó el registro correctamente";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }
    }
}